Cloud9 環境を複製してみた
こんにちは!AWS事業本部コンサルティング部のたかくに(@takakuni_)です。
今回は Cloud9 環境を複製してみようと思います。
「開発環境のセットアップを簡素化したい」、「開発環境の初期状態を整えたい」場合あるかと思います。
EBS スナップショットを利用したルートボリュームの置き換えを利用すれば、そのような悩みが解決できるかもしれません。では、早速やっていこうと思います。
本エントリでは便宜上、複製元環境を「オリジナル環境」、複製環境を「レプリカ環境」と記載します。
開発環境の複製にあたって、次のツールをオリジナル環境にインストールします。
- AWS CLI version 2.11.13
対応方法
複製にあたって行うアプローチは以下のとおりです。
- オリジナル環境にツールをインストールする
- EBS スナップショットを作成する
- 2 で取得したスナップショットをもとに EBS ボリュームを作成する
- レプリカ環境を作成する
- レプリカ環境のルートボリュームをデタッチ
- 3 で作成したボリュームにレプリカ環境のルートボリュームを置き換える
- レプリカ環境を起動。動作確認。
なぜ既存インスタンス持ち込みを利用しないのか
Cloud9 では Existing compute
モードを利用して、既存 EC2 インスタンスを持ち込むことができます。
ただ、 Existing compute モードの場合、接続方法は SSH を選択する必要があるため、セキュリティグループのインバウンドルールが必要になります。
「SSM を使ってセキュリティグループのインバウンドルールを無くしたい」かつ、「開発環境のセットアップを複製したい」ケースは、今回のような EBS スナップショットを利用する必要があります。
インストール
それでは早速、ツールをインストールしていきます。
AWS CLI
Cloud9 環境の OS に Amazon Linux 2 を選択した場合、デフォルトで AWS CLI v1 がインストールされています。今回は v1 をアンインストールして v2 をインストールします。
# ホームディレクトリへの移動 cd # AWS CLI v1 のアンインストール sudo pip uninstall awscli -y # AWS CLI version 2.11.13 のダウンロード curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64-2.11.13.zip" -o "awscliv2.zip" # AWS CLI version 2.11.13 の解凍 unzip awscliv2.zip # インストールプログラムを実行 sudo ./aws/install # AWS CLI バージョンを確認 aws --version
スナップショットの取得
オリジナル環境の EBS スナップショットを取得します。
ボリュームの作成
スナップショットのステータスが「利用可能」になったら次に進みます。
取得したスナップショットからボリュームを作成します。ボリュームはレプリカ環境で作成予定のインスタンスと同じ Availability Zone で作成する必要があります。
レプリカ環境の作成
レプリカ環境を作成していきます。スナップショットから複製したボリュームと同じ Availability Zone のサブネットを選択して起動します。
レプリカ環境のルートボリュームをデタッチ
レプリカ環境のルートボリュームをデタッチしていきます。
EC2 コンソールからレプリカ環境 ( EC2 インスタンス ) を停止します。その後、 EBS をクリックします。
EBS ボリューム一覧から「アタッチされたインスタンス」欄を確認し、レプリカ環境のルートボリュームを探します。
対象のルートボリュームが見つかったら、アクションから「ボリュームのデタッチ」を行います。
デタッチが完了したら、ボリュームの状態は「使用可能」になります。デタッチしたボリュームは利用しないため、削除して OK です。
ルートボリュームのアタッチ
オリジナル環境のスナップショットで作成した EBS ボリュームをレプリカ環境のルートボリュームにアタッチします。アクションから「ボリュームのアタッチ」を選択します。
レプリカ環境のインスタンス ID を選択し、対応するルートボリュームデバイス名を入力します。
レプリカ環境の起動
セットアップが完了したため、 Cloud9 コンソールからレプリカ環境を起動します。
ルートボリュームを置き換えたため、初回起動時に以下のような警告が出てきます。「Accept」をクリックします。
AWS CLI version 2.11.13 がインストールされていることが確認できます。また、AMTC を無効にした後、AWS CLI で aws sts get-caller-identity
コマンドが実行できました。
まとめ
以上、「Cloud9 環境を複製してみた」でした。開発環境を何台もセットアップしたくない方のお役に立てば幸いです。
AWS事業本部コンサルティング部のたかくに(@takakuni_)でした!